{{!
  Copyright (c) HashiCorp, Inc.
  SPDX-License-Identifier: BUSL-1.1
~}}

<LinkedBlock
  @params={{array
    (concat "vault.cluster.secrets.backend." (if (eq @item.keyType "ca") "sign" "credentials") (unless @item.id "-root"))
    @item.id
  }}
  class="list-item-row"
  data-test-secret-link={{@item.id}}
  @encode={{true}}
>
  <div class="columns is-mobile">
    <div class="column is-10">
      <LinkTo
        @route={{concat
          "vault.cluster.secrets.backend."
          (if (eq @item.keyType "ca") "sign" "credentials")
          (unless @item.id "-root")
        }}
        @model={{@item.id}}
        class="has-text-black has-text-weight-semibold"
      >
        <Icon @name="user" class="has-text-grey-light is-pulled-left" />
        <div class="role-item-details">
          <span class="is-underline">{{if (eq @item.id " ") "(self)" (or @item.keyWithoutParent @item.id)}}</span>
          <br />
          <span class="tag has-text-grey-dark">{{@item.keyType}}</span>
          {{#if @item.zeroAddress}}
            <span class="has-text-grey is-size-7">Zero-Address</span>
          {{/if}}
        </div>
      </LinkTo>
    </div>
    <div class="column has-text-right">
      {{#if (eq @backendType "ssh")}}
        <PopupMenu @name="role-ssh-nav">
          <nav class="menu">
            <ul class="menu-list">
              {{#if (eq @item.keyType "otp")}}
                {{#if @item.generatePath.isPending}}
                  <li class="action">
                    <Hds::Button disabled @color="tertiary" @icon="loading" @text="loading" @isIconOnly={{true}} />
                  </li>
                {{else if @item.canGenerate}}
                  <li class="action">
                    <LinkTo
                      @route="vault.cluster.secrets.backend.credentials"
                      @model={{@item.id}}
                      data-test-role-ssh-link="generate"
                    >
                      Generate Credentials
                    </LinkTo>
                  </li>
                {{/if}}
              {{else if (eq @item.keyType "ca")}}
                {{#if @item.signPath.isPending}}
                  <li class="action">
                    <li class="action">
                      <Hds::Button disabled @color="tertiary" @icon="loading" @text="loading" @isIconOnly={{true}} />
                    </li>
                  </li>
                {{else if @item.canGenerate}}
                  <li class="action">
                    <LinkTo
                      @route="vault.cluster.secrets.backend.sign"
                      @model={{@item.id}}
                      data-test-role-ssh-link="generate"
                    >
                      Sign Keys
                    </LinkTo>
                  </li>
                {{/if}}
              {{/if}}
              {{#if @item.canEditZeroAddress}}
                <li class="action">
                  <Hds::Button
                    disabled={{@loadingToggleZeroAddress}}
                    class="link"
                    @icon={{if @loadingToggleZeroAddress "loading"}}
                    @isIconOnly={{@loadingToggleZeroAddress}}
                    {{on "click" @toggleZeroAddress}}
                    @text={{if @item.zeroAddress "Disable Zero Address" "Enable Zero Address"}}
                  />
                </li>
              {{/if}}
              {{#if @item.updatePath.isPending}}
                <li class="action">
                  <Hds::Button disabled @color="tertiary" @icon="loading" @text="loading" @isIconOnly={{true}} />
                  <Hds::Button disabled @color="tertiary" @icon="loading" @text="loading" @isIconOnly={{true}} />
                </li>
              {{else}}
                {{#if @item.canRead}}
                  <li class="action">
                    <LinkTo @route="vault.cluster.secrets.backend.show" @model={{@item.id}} data-test-role-ssh-link="show">
                      Details
                    </LinkTo>
                  </li>
                {{/if}}
                {{#if @item.canEdit}}
                  <li class="action">
                    <LinkTo @route="vault.cluster.secrets.backend.edit" @model={{@item.id}} data-test-role-ssh-link="edit">
                      Edit
                    </LinkTo>
                  </li>
                {{/if}}
                {{#if @item.canDelete}}
                  <ConfirmAction
                    @buttonText="Delete"
                    @isInDropdown={{true}}
                    @onConfirmAction={{@delete}}
                    data-test-ssh-role-delete
                  />
                {{/if}}
              {{/if}}
            </ul>
          </nav>
        </PopupMenu>
      {{/if}}
    </div>
  </div>
</LinkedBlock>